package com.zxx.pattern.proxyPattern.proxyDynamic.dynamic1;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 时间业务处理类
 *
 * @author zxx on 2021/5/11
 */
public class TimeInvocationHandler implements InvocationHandler {


    private Object target;

    public TimeInvocationHandler(Object target) {
        this.target = target;
    }

    /**
     * @param proxy  被代理的对象
     * @param method 被代理对象的方法
     * @param args   方法中的参数
     * @return 被代理对象的方法的返回值
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //业务逻辑
        long startTime = System.currentTimeMillis();
        System.out.println("汽车开始行驶");

        //调用被代理对象中的方法
        method.invoke(target, args);

        //业务逻辑
        long endTime = System.currentTimeMillis();
        System.out.println("汽车停止行驶，共行驶了" + (endTime - startTime) + "毫秒");
        return null;
    }
}
